#ifndef BODYFACTORY_H_
#define BODYFACTORY_H_

#include "common.h"

#include "utils/Singleton.h"
#include "math/math.h"
#include "RigidBody.h"
#include <list>

namespace physicsworks {

using math::vec3;

class BodyFactory : public Singleton<BodyFactory> {
	friend class Singleton<BodyFactory>;

public:
	RigidBody* instanceRigidBody(vec3* vertices, int numVertices, const int* verticesIndices, int numFaces);
	RigidBody* instanceSphere(real radius);
	RigidBody* instanceCube(real radius);
	RigidBody* instanceBox(vec3 radius);
	
private:
	BodyFactory() : Singleton<BodyFactory>() {}
	~BodyFactory() {}
	BodyFactory(const BodyFactory&);
	BodyFactory& operator = (const BodyFactory&);
};

}

#endif /*BODYFACTORY_H_*/
